Skip to content

Rewrite multi-arch build to use cross-compilation instead of QEMU#20

Merged
pulpoff merged 1 commit intomasterfrom
claude/docker-asterisk-chan-dongle-AoPSz
Feb 27, 2026
Merged

Rewrite multi-arch build to use cross-compilation instead of QEMU#20
pulpoff merged 1 commit intomasterfrom
claude/docker-asterisk-chan-dongle-AoPSz

Conversation

@pulpoff
Copy link
Copy Markdown
Owner

@pulpoff pulpoff commented Feb 27, 2026

QEMU emulation cannot reliably compile Asterisk — gcc's cc1 randomly segfaults, autoconf tests fail non-deterministically, and pjproject's configure crashes. No amount of config.site or retry workarounds can fix fundamental QEMU instability.

Switch to cross-compilation: the builder stage always runs natively on the build platform (FROM --platform=$BUILDPLATFORM). For ARM targets, install cross-compiler toolchains (gcc-aarch64-linux-gnu, gcc-arm-linux-gnueabihf) and target-arch dev libraries via Debian multiarch. Configure with --host=$CROSS CC=$CROSS-gcc. QEMU is only used for the runtime stage (apt-get install, no compilation).

Key changes:

  • FROM --platform=$BUILDPLATFORM for native builder execution
  • Conditional cross-compiler + multiarch library installation
  • ./configure --host=$CROSS for ARM targets
  • Cross-aware strip ($CROSS-strip) for binary stripping
  • Full make -j$(nproc) parallelism (no QEMU throttling needed)
  • Removed config.site QEMU workarounds (no longer needed)
  • Removed retry loops (no longer needed)

QEMU emulation cannot reliably compile Asterisk — gcc's cc1 randomly
segfaults, autoconf tests fail non-deterministically, and pjproject's
configure crashes. No amount of config.site or retry workarounds
can fix fundamental QEMU instability.

Switch to cross-compilation: the builder stage always runs natively
on the build platform (FROM --platform=$BUILDPLATFORM). For ARM
targets, install cross-compiler toolchains (gcc-aarch64-linux-gnu,
gcc-arm-linux-gnueabihf) and target-arch dev libraries via Debian
multiarch. Configure with --host=$CROSS CC=$CROSS-gcc. QEMU is only
used for the runtime stage (apt-get install, no compilation).

Key changes:
- FROM --platform=$BUILDPLATFORM for native builder execution
- Conditional cross-compiler + multiarch library installation
- ./configure --host=$CROSS for ARM targets
- Cross-aware strip ($CROSS-strip) for binary stripping
- Full make -j$(nproc) parallelism (no QEMU throttling needed)
- Removed config.site QEMU workarounds (no longer needed)
- Removed retry loops (no longer needed)

https://claude.ai/code/session_01M7DJEAxrReANcMZ6SjChaG
@pulpoff pulpoff merged commit c161415 into master Feb 27, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants